package br.com.sixsoftware.helpdesk.domain;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.SequenceGenerator;
import javax.persistence.Transient;

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo_usuario", discriminatorType = DiscriminatorType.STRING)
// @SequenceGenerator(name = "sq_usuario", sequenceName = "sq_usuario")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@Column(name = "id_usuario")
	private Long id;

	@Column
	private String nome;

	@Column
	private String login;

	@Column
	private String senha;

	@Transient
	private String confirmacaoSenha;

	public Usuario() {

	}

	public static void clonar (Usuario usuarioOrigem, Usuario usuarioDestino) {
		usuarioDestino.setId(usuarioOrigem.getId());
		usuarioDestino.setNome(usuarioOrigem.getNome());
		usuarioDestino.setLogin(usuarioOrigem.getLogin());
		usuarioDestino.setSenha(usuarioOrigem.getSenha());
		usuarioDestino.setConfirmacaoSenha(usuarioOrigem.getConfirmacaoSenha());
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getConfirmacaoSenha() {
		return confirmacaoSenha;
	}

	public void setConfirmacaoSenha(String confirmacaoSenha) {
		this.confirmacaoSenha = confirmacaoSenha;
	}

	// Metodo criado para contornar o problema na utilizacao do atributo tipoUsuario, quando mapeado para o
	// discriminator column. O get sempre traz null logo apos uma insercao no bd
	public String getTipoUsuario() {
		return "usuario";
	}

}
